package com.azt.api.service;

import java.util.List;
import java.util.Map;

import com.azt.api.pojo.Dictionary;
import com.azt.api.pojo.MsgConfig;
import com.azt.api.pojo.MsgEnquirySend;
import com.azt.api.pojo.MsgEnquiryUnsendVO;
import com.azt.api.pojo.MsgUser;
import com.azt.api.pojo.MsgUserUnsend;
import com.azt.model.page.Pagination;

public interface MsgUserService {
	
	  /**
	   * 消息分页
	   * @Title: selectMsgUserPage 
	   * @Description: TODO
	   * @param pageNo
	   * @param pageSize
	   * @param params
	   * @return
	   * @return: Pagination
	   * @author: zhoudongdong 2016年11月14日 下午1:56:55
	   */
	  Pagination  selectMsgUserPage(int pageNo,int pageSize,Map<String, String> params);
	  
	  /**
	   * 查询未读消息数量
	   * @Title: selectMsgCountNotRead 
	   * @Description: TODO
	   * @param params
	   * @return
	   * @return: int
	   * @author: zhoudongdong 2016年11月14日 下午1:58:08
	   */
	  int selectMsgCountNotRead(Map<String, String> params);
	  
	  /**
	   * 修改状态到已读
	   * @Title: changeMsgReaded 
	   * @Description: TODO
	   * @param msg
	   * @return: void
	   * @author: zhoudongdong 2016年11月16日 下午4:28:33
	   */
	  void changeMsgReaded(MsgUser msg);
	  
	  /**
	   * 批量修改到已读
	   * @Title: changeAlltoReaded 
	   * @Description: TODO
	   * @param msgids
	   * @return: void
	   * @author: zhoudongdong 2016年11月16日 下午4:29:26
	   */
	  void changeAlltoReaded(String[] msgids);
	  
	  /**
	   * 批量删除信息
	   * @Title: delchooseMsg 
	   * @Description: TODO
	   * @param msgids
	   * @return: void
	   * @author: zhoudongdong 2016年11月16日 下午5:16:52
	   */
	  void delchooseMsg(String[] msgids);
	  
	  /**
	   * 未读消息数
	   * @Title: selectNoReadMsgCountByUseridAndCode 
	   * @Description: TODO
	   * @param userid
	   * @param code
	   * @return
	   * @return: int
	   * @author: zhoudongdong 2016年11月17日 下午1:38:15
	   */
	  List<String> selectNoReadMsgCountByUserid(Integer userid);
	  
	  /**
	   * 根据角色初始化消息
	   * @Title: selectMainMsgConfig 
	   * @Description: TODO
	   * @param roleType
	   * @return
	   * @return: List<MsgConfig>
	   * @author: zhoudongdong 2016年11月18日 上午10:33:46
	   */
	  List<MsgConfig> selectMainMsgConfig(int userId,int roleType);
	  
	  /**
	   * 获取code=msgType的分类
	   * @Title: selectMsgTypeDic 
	   * @Description: TODO
	   * @return
	   * @return: List<Dictionary>
	   * @author: zhoudongdong 2016年11月18日 下午2:05:56
	   */
	  List<Dictionary> selectMsgTypeDic();
	  
	  /**
	   * 根据userId和code获取
	   * @Title: getMagUserUnsendByUidAndCode 
	   * @Description: TODO
	   * @param uid
	   * @param code
	   * @return
	   * @return: MsgUserUnsend
	   * @author: zhoudongdong 2016年11月18日 下午4:54:55
	   */
	  MsgUserUnsend getMagUserUnsendByUidAndCode(int uid,String code);
	  
	  /**
	   * 添加新的unsend记录
	   * @Title: addNewMsgUserUnsend 
	   * @Description: TODO
	   * @return: void
	   * @author: zhoudongdong 2016年11月18日 下午5:13:25
	   */
	  void addNewMsgUserUnsend(MsgUserUnsend unsend);
	  
	  /**
	   * 删除unsend记录
	   * @Title: deleteMsgUserUnsend 
	   * @Description: TODO
	   * @param id
	   * @return: void
	   * @author: zhoudongdong 2016年11月21日 上午9:58:51
	   */
	  void deleteMsgUserUnsend(Integer id);
	  
	  /**
	   * 修改unsend记录
	   * @Title: updateMsgUserUnsend 
	   * @Description: TODO
	   * @param unsend
	   * @return: void
	   * @author: zhoudongdong 2016年11月21日 上午10:01:19
	   */
	  void updateMsgUserUnsend(MsgUserUnsend unsend);
	  
	  /**
	   * 推送询价消息列表
	   * @Title: selectMainMsgEnquiry 
	   * @Description: TODO
	   * @param userId
	   * @return
	   * @return: List<MsgEnquiryUnsendVO>
	   * @author: zhoudongdong 2016年11月21日 下午2:41:47
	   */
	  List<MsgEnquiryUnsendVO> selectMainMsgEnquiry(int userId);
	  
	  /**
	   * 添加一条询价不勾选记录
	   * @Title: addMsgEnquiryUnsend 
	   * @Description: TODO
	   * @param enqu
	   * @return: void
	   * @author: zhoudongdong 2016年11月21日 下午4:17:47
	   */
	  void addMsgEnquiryUnsend(MsgEnquirySend enqu);
	  
	  /**
	   * 查询一条询价勾选记录
	   * @Title: selectEnqUnsendByUidAndCid 
	   * @Description: TODO
	   * @param uid
	   * @param cid
	   * @return
	   * @return: MsgEnquiryUnsend
	   * @author: zhoudongdong 2016年11月21日 下午4:27:04
	   */
	  MsgEnquirySend selectEnqUnsendByUidAndCid(int uid,int cid);
	  
	  /**
	   * 删除
	   * @Title: deleteEnqUnsendByUidAndCid 
	   * @Description: TODO
	   * @param id
	   * @return: void
	   * @author: zhoudongdong 2016年11月21日 下午4:47:47
	   */
	  void deleteEnqUnsendByUidAndCid(int id);
	  
	  /**
	   * 更新
	   * @Title: updateEnqUnsend 
	   * @Description: TODO
	   * @param enqu
	   * @return: void
	   * @author: zhoudongdong 2016年11月21日 下午4:48:24
	   */
	  void updateEnqUnsend(MsgEnquirySend enqu);


	/**
	 * insert 到 u_msg_enquiry_send 表里面
	 * userId已经insert就不管
	 * @param userId
	 * @param companyId
	 */
	  void insertByUserAndCompany(Integer userId , Integer companyId);
	  
	  /**
	   * 所有未读消息
	   */
	  int allCountNoReadMsg(Integer userId);

	/**
	 * 获取所有延迟的消息
	 * Created by 张栋 on 2017/1/11 17:04
	 */
	List<MsgUser> getDelayMsg();


	/**
	 * 更新msgUser
	 * Created by 张栋 on 2017/1/11 17:08
	 */
	void updateMsgUser(MsgUser msg);

    List<Map> findHeadMsgCount(int userId);
}
